#ifndef COUNTDOWN_H
#define COUNTDOWN_H

#include <QWidget>
#include <QSpinBox>
#include <QPushButton>
#include <QLabel>
#include <QTimer>
#include "timer.h"

/*
 * 倒计时类
 */

namespace Timer
{
class Countdown : public QWidget
{
	Q_OBJECT
private:
	Timer::timer timer; // 计时类
	Timer::timer record_time; // 保存倒计时的时间
	QTimer * qtimer;
	QSpinBox * hourSpinBox;  // 时分秒的显示
	QSpinBox * minuteSpinBox;
	QSpinBox * secendSpinBox;
	QLabel * tips; // 提示窗口
	QPushButton * start_end_btn; // 开始/结束 按钮
	QPushButton * stop_btn;   // 暂停按钮
	bool run_status  = false; // 倒计时状态
	bool stop_status = false; // 暂停状态
public:
	explicit Countdown(QWidget *parent = nullptr);
private:
	void initTimeSpinBox();   // 初始化时间微调框
	void setReadOnly(bool b); // 设置时间微调框只读
	void setConnect_TimeSpinBox(bool b); // 设置时间微调框和时间类之间的连接
	/*
	* 在开始倒计时后，仍会触发valueChanged信号，如果再保持连接，
	* 将会产生额外的开销。所以应该在开启倒计时之后断开信号槽之间的连接。
	*/
	void showTips();      // 显示提示窗口，提醒倒计时结束
	void show_timetips(); // 提示文本框显示倒计时的总时间
	void reset();         // 重置倒计时

signals:
	void EndofCountdown(); // 倒计时结束
private slots:
	void set_hours(int h);   // 设置小时
	void set_minutes(int m); // 设置分钟
	void set_secends(int s); // 设置秒钟
	void start_end();  // 开始/结束
	void stop_start(); // 暂停/开始
	void update_time_display(); // 更新时间、显示
};
} // namespace Timer

#endif // COUNTDOWN_H
